# -*- coding: utf-8 -*- 
# @project : 《Atcoder》
# @Author : created by bensonrachel on 2021/9/29
# @File : 18.Increasing Subsequence.py
# N方的dp做法，在cses上TLE。
def dp_solve():
    for i in range(n):
        for j in range(0,i):
            if(a[j] < a[i]):
                dp[i] = max(dp[i],dp[j]+1)
    return max(dp)
#dp[i]代表以第i个元素结尾的最大升序序列长度为多少,一定要选i作为结尾。子序列的最后一个为i。所以初始化时dp[i]都是1。
#最后由于我们并不知道真正的最长子序列是以哪个元素结尾的，所以我们要找出dp数组中的最大值。
if __name__ == '__main__':
    n = int(input())
    a = [int(i) for i in input().split()]
    dp = [1] * n
    ans = dp_solve()
    print(ans)